Fix crash in heap allocator when Xen 'zone' is empty.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 5 Mar 2007 14:39:03 +0000 (14:39 +0000)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 5 Mar 2007 14:39:03 +0000 (14:39 +0000)
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/common/page_alloc.c

index b1d7647e476c1c7211c1c7b9d3e3263594672e25..f4159373daab47fe5ae5208f6b3dcda537937933 100644 (file)
@@ -342,8 +342,8 @@ static struct page_info *alloc_heap_pages(
     unsigned int zone_lo, unsigned zone_hi,
     unsigned int cpu, unsigned int order)
 {
-    unsigned int i, j, node = cpu_to_node(cpu), num_nodes = num_online_nodes();
-    unsigned int zone, request = (1UL << order);
+    int i, j, zone, node = cpu_to_node(cpu), num_nodes = num_online_nodes();
+    unsigned long request = 1UL << order;
     struct page_info *pg;
 
     ASSERT(node >= 0);
@@ -426,7 +426,7 @@ static void free_heap_pages(
     /* Merge chunks as far as possible. */
     while ( order < MAX_ORDER )
     {
-        mask = 1 << order;
+        mask = 1UL << order;
 
         if ( (page_to_mfn(pg) & mask) )
         {